package com.alks.function.service.finance.mtlcosts;

import com.alks.entity.data.response.ResponseInfo;
import com.alks.function.data.dto.finance.mtlcosts.OutListDetailDto;
import com.alks.function.data.request.finance.mtlcosts.OutCfmRequest;
import com.alks.function.data.request.finance.mtlcosts.OutListDetailRequest;
import com.alks.function.data.request.finance.mtlcosts.OutListSizeFindRequest;
import com.alks.function.data.request.finance.mtlcosts.OutListTempRequest;

import java.util.List;
import java.util.Map;

/**
 * @author MS
 * @since 2024/6/25下午3:26
 */
public interface IOutListFinService {
    /**
     * 外发资料查询-分页可条件查询
     * @param request 查询条件
     * @return 外发资料
     */
    ResponseInfo outListTempQuery(OutListTempRequest request);

    /**
     * 外发明细查询-分页可条件查询
     *
     * @param request 查询条件
     * @return 外发明细
     */
    Map<String, Object> outListDetailQuery(OutListDetailRequest request);

    /**
     * 外发号码明细-条件查询
     * @param request 查询条件
     * @return 外发号码
     */
    ResponseInfo outListSizeQuery(OutListSizeFindRequest request);

    /**
     * 检核作业-更新
     *
     * @param request     单据号
     * @param type        0.取消检核 1.检核
     * @param financeYymm 结算月份
     * @param accountName 结算方式
     * @param retryFlag
     * @return 更新结果1
     */
    ResponseInfo outListTempCfm(List<OutCfmRequest> request, Integer type, String financeYymm, String accountName, Integer retryFlag);

    /**
     * 外发结算回显
     *
     * @return 回显数据
     */
    Map<String, List<String>> outListDetailBack(String vendorSearch, String financeSearch);

    /**
     * 结算清单导出数据处理
     *
     * @param dtoList 待处理数据
     * @return
     */
    Map<String, String> finExportDispose(List<OutListDetailDto> dtoList);
}
